$CURACTS — данная функция возвращает выведенные на экран действия в виде кода QSP, как текстовое значение.
Действия сохраняются как набор операторов act с cответствующими параметрами и операциями.
Записав возвращённое функцией значение в переменную, можно восстановить действия с помощью оператора dynamic. Пример:
$CURLOC — функция возвращает название текущей локации, т.е. локации, в которой "находится" игрок.
Технически это следует понимать так. В момент запуска игры плеер начинает выполнять код самой первой локации в игре, а когда код выполнен, плеер "останавливается" и ждёт участия игрока. Игрок может нажимать различные кнопки в игре, ссылки и выбирать пункты меню, что приводит к выполнению других блоков кода (например, действий) и переходам на новые локации по goto или xgoto. При таких переходах плеер вновь выполняет код других локаций и, когда код выполнен, "останавливается".
Так вот, когда на локацию осуществлён непосредственный переход (т.е. по goto или xgoto, либо это самая первая локация в игре), $curloc начинает возвращать название этой локации, — во всё время, пока выполняется код, и когда плеер "останавливается". Если после остановки не происходит переход по `goto/'xgoto, значение, которое возвращает $curloc`, не меняется.
Пример использования:
$DESC — возвращает текст базового описания локации с заданным названием. Общая запись:
, где [$локация] — это название интересующей нас локации. Например:
DYNEVAL — выполняет код, переданный в виде строки текста, и возвращает результат, если он есть. Общая запись:
, где [$код] — это обычный код QSP, записанный в виде текста. Выполнение такого кода аналогично выполнению кода функции FUNC. Аргументы [аргумент 0], [аргумент 1] и т.д. могут использоваться внутри [$код], их значения автоматически помещаются в переменные args[0], args[1], и т.д. соответственно.
Чтобы dyneval возвращала результат, необходимо внутри [$код] присвоить этот результат переменной result.
Примеры:
Результат функции равен значению $result при возврате строкового значения или result при возврате числового значения. если при выполнении кода были установлены и result, и $result, то предпочтение отдаётся строковому значению. После выполнения кода предыдущие значения args и result восстанавливаются, затем продолжается выполнение кода после dyneval.
Внимание: при использовании в коде [$код] операторов `gs/'dynamic переменные result и $result` могут перезаписываться кодом, выполняемым этими операторами (исправлено в более новых версиях интерпретатора >5.7.0).
См. также оператор DYNAMIC.
FUNC — выполнение кода указанной локации без непосредственного перехода на неё с возвращением значения.
Общая запись:
, где [$локация] — это название локации, код которой мы хотим выполнить без непосредственного перехода на неё. Аргументы [аргумент 0], [аргумент 1] и т.д. могут использоваться на этой локации, их значения автоматически помещаются в переменные args[0], args[1], и т.д. соответственно.
Базовое описание и список действий локации [$локация] добавляются к основному описанию и действиям старой локации. Так же происходит выполнение операторов в поле "Выполнить при посещении"
Результат функции равен значению $RESULT при возврате строкового значения или RESULT при возврате числового значения. Если при обработке локации были установлены и RESULT, и $RESULT, то предпочтение отдаётся строковому значению. После обработки локации предыдущие значения ARGS и RESULT восстанавливаются.
Внимание: при использовании в коде [$код] операторов `GS/'DYNAMIC` переменные RESULT и $RESULT` могут перезаписываться кодом, выполняемым этими операторами (исправлено в более новых версиях интерпретатора >5.7.0).
Примеры:
$GETOBJ — возвращает название предмета в рюкзаке, расположенного в заданной позиции. Общая запись:
Индексация (нумерация) предметов рюкзака ведётся с 1. Если предмета с индексом [номер предмета] не существует, возвращается пустая строка ('').
Примеры:
Код, подсчитывающий в массиве OBJECTS число предметов с одинаковым названием:
IIF — возвращает значение в зависимости от верности выражения.
Общая запись:
Если [#выражение] верно, возвращает значение выражения [выражение_да], в противном случае возвращает значение выражения [выражение_нет]. При выполнении функции вычисляются значения всех трёх выражений.
Примеры:
$INPUT — возвращает интерпретатору введённый игроком текст, либо '' (пустая строка), если была нажата кнопка "Отмена". Общая запись:
, где [$текст] — это приглашение в диалоговом окне, которое видит игрок. Например:
При выполнении данной команды на экране появится диалоговое окно с текстом "Как звать тебя, герой?", а выполнение остального кода приостановится, пока игрок не провзаимодействует с диалоговым окном.
Игрок может ввести или не ввести текст, и нажать кнопку "ОК" или "Отмена". Если игрок ввёл текст и нажал кнопку "ОК", функция $input вернёт переменной $text введённый игроком текст. Во всех остальных случаях после закрытия диалогового окна функция вернёт пустую строку ('').
Другие примеры:
Допустимо, но не одобряется, использовать функцию для возвращения числовых значений:
Это может привести к различным ошибкам в игре, если игрок введёт в диалоговом окне не только цифры. Например:
Если игрок введёт вместо числа строку "24 года", плеер выдаст ошибку 101 "Несоответствие типов данных". Подобные ситуации должен предусматривать автор игры, а значит правильно будет озаботиться проверкой введённого значения уже после того, как функция $input будет выполнена.
$LCASE — возвращает строку маленьких букв, полученную изменением регистра букв исходной строки. Общая запись:
, где [$текст] — любая строка текста.
Примеры:
$MAINTXT — возвращает текст, выведенный в окно основного описания.
Данная функция может быть полезна для замены части текста в окне основного описания, либо иной обработке текста. Пример:
MAX — возвращает максимальное из значений выражений-аргументов. Можно передавать от одного до девяти значений/аргументов. Если передан один аргумент, то считается, что указано имя массива. Общая запись:
Обратите внимание, при передаче одного аргумента поиск максимального элемента происходит среди строковых (если название массива указано со знаком $) или среди числовых значений элементов массива. Например:
Нельзя писать так и надеяться, что произойдёт поиск среди значений массива a:
Можно так:
Другие примеры:
$MID — позволяет вырезать из строки её часть. Общая запись:
, где [$строка] — это строка текста, именно из неё функция вырезает часть, начиная с символа номер [#начало], и длиной в [#длина] символов. Нумерация символов начинается с 1. Если отсутствует параметр [#длина], вырезается часть до конца строки. Параметр [#начало] обязателен, и может в принципе принимать любые значения.
MIN — возвращает минимальное из значений выражений-аргументов. Можно передавать от одного до девяти значений/аргументов. Если передан один аргумент, то считается, что указано имя массива. Общая запись:
Обратите внимание, при передаче одного аргумента поиск минимального элемента происходит среди строковых (если название массива указано со знаком $) или среди числовых значений элементов массива. Например:
Нельзя писать так:
Можно так:
Другие примеры:
$QSPVER - возвращает версию интерпретатора в формате "X.Y.Z". Пример вызова:
$REPLACE — общая запись:
Данная функция заменяет в строке [$строка] все вхождения строки [$поиск] строкой [$замена] и возвращает результат. Если [$замена] отсутствует или указана пустая строка, то удаляет в исходной строке все вхождения искомой строки. Примеры:
$SELACT — возвращает название выделенного действия в любом месте игры.
Следует помнить, что выделение действия происходит при наведении на него указателя мыши, а не при непосредственном нажатии.
Пример использования можно посмотреть в разделе $onactsel
$SELOBJ — возвращает название выделенного предмета в любом месте игры. Выделение предмета происходит в момент нажатия (щелчка мышью по предмету) и не снимается до применения команды unselect.
Пример использования можно посмотреть в разделе $onobjsel
$STATTXT — возвращает текст, выведенный в окно дополнительного описания. Может быть полезна для замены части текста в окне дополнительного описания.
$STR — возвращает строку текста, полученную переводом числа в строку. Общая запись:
Пример:
$STRFIND — возвращает подстроку, соответствующую регулярному выражению, из указанной строки. Общая запись:
, где [$строка] — исходная строка, в которой производим поиск вхождения, соответствующего регулярному выражению [$шаблон], или группе номер [#номер] в регулярном выражении. Если подстрока с указанным номером отсутствует, то возвращается пустая строка. Нумерация групп подстрок начинается с 1. Если параметр [#номер] отсутствует или равен 0, то возвращается подстрока, соответствующая всему регулярному выражению [$шаблон]
Например, возьмём регулярное выражение:
Метасимвол \S означает любой непробельный символ, а квантификатор + указывает, что непробельные символы должны присутствовать один или более раз. Таким образом запись \S+ можно условно сопоставить слову. Каждое слово с помощью скобок () выделено в отдельную группу, а между группами присутствуют пробельные символы \s. Метасимволы ^ и $ означают соответственно начало и конец строки. Таким образом наше регулярное выражение соответствует любой строке из трёх слов, разделённых пробелами.
Тогда:
Следующие примеры показывают, как $strfind возвращает часть строки, соответствующую регулярному выражению:
$TRIM — возвращает указанную строку без прилегающих символов табуляции и пробелов. Общая запись:
Например:
$UCASE — возвращает строку больших букв, полученную изменением регистра букв исходной строки. Общая запись:
, где [$текст] — любая строка текста.
Примеры:
$USER_TEXT — в любом месте игры возвращает текст, который находится в строке ввода (поле ввода). Имеет краткую форму $usrtxt. Пример смотри в разделе $usercom.
ARRCOMP — возвращает индекс элемента массива, соответствующего регулярному выражению. Поиск начинается с элемента с заданным номером; индексация элементов массива ведётся с нуля. Если указанное значение не найдено, функция возвращает -1. Общая запись:
, где [#начало] — номер элемента массива, с которого следует начать поиск, [$имя_массива] — название массива, по которому нужно произвести поиск, [$шаблон] — регулярное выражение, с которым будет сравниваться искомый элемент.
Параметр [#начало] может отсутствовать, при этом его значение принимается равным 0. Поиск ведётся только среди текстовых элементов массива.
Важно! В более новых версиях плеера (например, в Quest Navigator) параметр [#начало] переставлен в конец:
Для примера возьмём вот такой массив:
Нам нужно найти элемент, значение которого состояит из трёх слов. В грубом приближении слово — это набор из одного или более непробельных символов \S+, по бокам от которого могут стоять или не стоять символы пробела \s, отсюда мы можем составить вот такое регулярное выражение:
Остаётся только выяснить какой элемент массива соответсвует шаблону:
Если мы хотим проигнорировать первый элемент и начать поиск со второго:
А вот так мы можем вывести на экран значения всех элементов, содержащих слово "иду":
Другие примеры:
ARRPOS — возвращает индекс элемента массива, равного указанному значению. Поиск начинается с элемента с заданным номером; индексация элементов массива ведётся с нуля. Если указанное значение не найдено, функция возвращает -1. Общая запись:
, где [#начало] — номер элемента массива, с которого следует начать поиск, [$имя_массива] — название массива, по которому нужно произвести поиск, [значение] — число, или строка (в зависимости от типа массива), которое нужно найти в массиве.
Важно! В более новых версиях плеера (например, в Quest Navigator) параметр [#начало] переставлен в конец:
Для примера возьмём такой массив:
Нам нужно найти элемент со значением "жёлтый":
Если мы хотим проигнорировать первые два элемента:
Если мы хотим найти элемент со значением, которого нет в массиве:
Другие примеры:
ARRSIZE — функция возвращает число элементов массива. Общая запись:
, где [$имя_массива] — название массива, размер которого хотим получить.
В силу особенностей движка плеера, не важно, указывается ли название текстового, или числового, массива, возвращено будет наибольшее значение. Для примера:
COUNTOBJ — возвращает количество предметов в инвентаре.
Номер последнего предмета в списке численно совпадает с количеством предметов, поэтому всегда можно получить название последнего предмета так:
INSTR — возвращает номер символа, с которого начинается вхождение подстроки в строку. Общая запись:
, где [#начало] — это номер символа, с которого нужно начинать поиск, [$строка] — это текстовое значение (строка), по которому нужно производить поиск, а [$подстрока] — значение, которое мы ищем в указанной строке. Нумерация символов начианется с 1. Параметр [#начало] может отсутствовать, при этом он принимается равным 1.
Примеры:
Если ни одного вхождения указанной подстроки в строке нет, instr возвращает 0.
Пример:
Важно: в более новых версиях (Quest Navigator) необязательный параметр [#начало] переставлен в конец:
ISNUM — функция возвращает -1 (истина), если переданная строка является числом, и — 0, если строка не является числом. Общая запись:
, где [$строка] — любая строка текста.
При проверке учитываются знак - в начале, прилегающие пробелы и символы табуляции, но кроме того, если хотя бы один символ окажется не цифрой, функция вернёт 0 (ложь).
Примеры:
ISPLAY — функция проверяет, проигрывается ли в данный момент файл с указанным названием, и если проигрывается, возвращает -1. В противном случае функция возвращает 0. Общая запись:
, где [$путь_к_файлу] — путь к звуковому файлу относительно файла игры.
Пример:
LEN — возвращает длину указанной строки текста (количество символов). Общая запись:
, где [$текст] — любое текстовое значение.
Примеры:
MSECSCOUNT — возвращает количество миллисекунд, прошедших с момента начала игры. Данная функция при использовании на локации-счётчике позволяет организовывать различные события, происходящие в реальном времени. Так же, с помощью этой функции можно делать замеры быстродействия различных участков кода в вашей игре:
RAND — возвращает случайное число между двумя указанными числами. Общая запись:
, где [#выражение 1] и [#выражение 2] — два любых числа или числовых выражения. Параметр [#выражение 2] может отсутствовать, при этом он принимается равным нулю (в более новых версиях плеера, например Quest Navigator, данный параметр по умолчанию равен единице).
Примеры:
RGB — возвращает числовой код цвета на основе трёх числовых аргумнтов, каждый из которых соответствует составляющей требуемого цвета. Общая запись:
, где [#красный],[#зелёный] и [#синий] — числовое выражение трёх составляющих цвета соответсвенно красной, зелёной и синей; должны принимать значения от 0 до 255.
Данная функция обычно используется совместно с системными переменными bcolor, fcolor, lcolor. Пример:
RND - возвращает случайное значение от 1 до 1000. Аналогично команде:
STRCOMP — проводит сравнение строки с регулярным выражением и, если строка соответствует регулярному выражению, возвращает -1 (истина), а если не соответствует — 0 (ложь). Общая запись:
, где [$строка] — любое текстовое значение, [$шаблон] — регулярное выражение, с которым производится сравнение.
Например, нам нужно проверить, состоит ли указанная строка из трёх слов. Каждое слово, в грубом виде, это набор непробельных символов, значит мы можем воспользоваться метасимволом \S и квантификатором +. Слова обычно разделены проблеьными символами, для чего мы используем метасимвол \s. Получается вот такое регулярное выражение:
Теперь мы можем проверить, какие строки соответствуют этому регулярному выражению:
STRPOS — возвращает позицию символа, с которого начинается вхождение подстроки, соответствующей регулярному выражению, в указанную строку. Общая запись:
, где [$строка] — исходная строка, в которой производим поиск вхождения, соответствующего регулярному выражению [$шаблон], или группе номер [#номер] в регулярном выражении. Нумерация групп в регулярном выражении начинается с 1. Если подстрока с указанным номером отсутствует, то возвращается 0.
Если параметр [#номер] отсутствует или равен 0, то возвращается позиция символа, с которого начинается вхождение подстроки, соответствующей всему регулярному выражению.
Например, нам нужно выяснить, в какой части текста встречается словосочетание "зелёное яблоко", однако при этом не должно быть важно, в каком падеже записано это прилагательное.
Чтобы написать регулярное выражение для этой задачи, нам нужно предусмотреть все падежи:
Как видим, во всех формах меняются только окончания слов. Поэтому мы можем составить вот такое регулярное выражение:
Через прямую черту в скобках перечисленны возможные варианты окончаний. А теперь выясним, с какого символа в строке начинается возможное слвовосочетание "зелёное яблоко":
Если мы не просто хотим узнать, с какого символа начинается вхождение в строку словосочетания, но где начинается вхождение слово "яблоко" из этого словосочетания, нам нужно выделить слово "яблоко" с вариантами окончаний в отдельную группу и воспользоваться параметром [#номер]:
VAL — переводит указанную строку цифр в соответствующее число. Общая запись:
, где [$выражение] — любая строка текста.
При проверке учитываются знак - в начале, прилегающие пробелы и символы табуляции, но кроме того, если хотя бы один символ окажется не цифрой, функция вернёт 0. Так же если [$выражение] равно '' (пустая строка), то возвращается 0.
Пример:
Aleks Versus'HowDo-F.A.Q.'2021-2022
Aleks Versus'Game Adventure Making'Really Unimaginable Stories'2013-2022
1.1. В чём разница между set x=10, let x=10 и x=10?
1.2. В чём разница между переменной со знаком $ и без знака $?
1.3. В чём разница между ' ' (апострофы) и " " (кавычки)?
1.4. В чём разница между *pl "строка" и просто " строка" ?
1.5. Чем отличаются эти две команды? *pl "<<$perem>>" и *pl $perem
1.6. В чём разница между dynamic и dyneval?
1.7. В чём разница между gt и goto?
1.8. Чем отличается goto от gosub?
18.1. Чем отличаются команды addqst и openqst?
Источники и дополнительные материалы
2.1. Как сделать, чтобы значение переменной изменялось с течением времени?
2.2. Как сделать, чтобы из одной локации меня через пару секунд перебрасывало в другую локацию?
2.3. Как сделать, чтобы через пару секунд после входа на локацию появлялось новое действие?
2.4. Как сделать, чтобы цикл выполнялся параллельно остальному коду, а не прерывал его?
Источники и дополнительные материалы
3.1. Как вывести на экран отдельное окошко с текстом? | Подскажите аналог команды alert в QSP.
3.2. Как вывести на экран окошко, в котором игрок должен ввести текст? | Подскажите аналог команды prompt в QSP.
3.3. Как прикрутить возможность выбора варианта к окну msg? | Подскажите аналог команды confirm в QSP.
3.4. Как сделать ввод имени игроком?
3.5. Как увеличить число правильных ответов, которые может ввести игрок? | Как сделать варианты для ответа через $input?
Источники и дополнительные материалы
4.1. Как сделать меню предмета?
4.2. Как сделать разные меню для двух и более предметов?
4.3. Как сделать меню в ссылках?
4.4. Как передавать локациям-пунктам меню аргументы?
4.5. Как делать контекстное (динамическое) меню?
4.6. Как вставить разделитель в меню?
4.7. Как вставить картинки в меню?
Источники и дополнительные материалы
5.1. Как сделать так, чтобы не писать один и тот же код в каждой локации?
5.2. Как сделать кнопку "Назад", работающую на каждой локации?
5.3. Почему в args на локации-обработчике перехода на новую локацию уже есть данные?
Источники и дополнительные материалы
6.1. Как вставить музыку или звук в игру?
6.2. Как запустить две звуковые дорожки?
6.3. Как при переходе на новую локацию прервать одну мелодию и запустить другую?
6.4. Как перезапустить звуковую дорожку?
Источники и дополнительные материалы
7.1. Как делать гиперссылки, по нажатию на которые выполняется код? | Как делать кликабельный текст? | Как сделать, чтобы по нажатию на текст что-то происходило?
7.2. Как менять цвет гиперссылки?
7.3. Как помещать в гиперссылки сложный код?
7.4. Как сделать гиперссылки без подчёркивания?
Источники и дополнительные материалы
8.1. Какой командой можно очистить окно дополнительного описания?
8.2. Существует ли команда для того, чтобы получить название текущей локации?
8.3. Какой командой можно вывести текст в окно дополнительного описания?
8.4. Есть ли команда, которая делает выход из игры?
Источники и дополнительные материалы
9.1. Как вставить картинку в игру?
9.2. Можно ли вставить в игру gif-файл?
9.3. Как вставить картинку в действие?
9.4. Как поставить картинку фоном?
9.5. Как выводить изображения послойно? Накладывать друг на друга?
9.6. Как сделать кликабельное изображение? | Как сделать так, чтобы при щелчке по изображению выполнялись какие-то действия?
9.7. Как сделать сменяемое изображение на локации?
9.8. Как сделать вывод рандомного изображения?
Источники и дополнительные материалы
10.1. Для чего нужен оператор REFINT, и как он работает?
10.2. Как изменить цвет фона в игре?
10.3. Как изменить формат части текста? Размер, цвет, наклон и т.д.?
10.4. Как сделать красивый фон в классическом плеере?
10.5. Хочу, чтоб в игре окна располагались определённым образом. Как это сделать?
10.8. Как изменить цвет подсветки действий?
10.9. Как изменить цвет фона для отдельного окна?
10.10. Как сделать плавное появление текста? | Как сделать плавное изменение цвета фона? | Как сделать плавное изменение цвета текста?
10.11. Как использовать в игре собственный шрифт?
10.12. С предметов можно снимать выделение, а можно ли снять выделение с действия?
Источники и дополнительные материалы
11.1. При проверке условия записано просто число, без операции сравнения, но QSP не выдаёт ошибку. Почему?
11.2. Как сделать так, чтобы действие появлялось только при определённом условии?
11.3. Видел в одной из игр, как после нажатия на действие, оно становится неактивным. Как это сделать?
11.4. Как добавить текст, который будет выводиться только при выполнении определённого условия?
11.6. Как упростить условие с логическим И (AND)?
11.7. Как упростить взаимоисключающие условия? Логическое XOR.
Источники и дополнительные материалы
12.1. Зачем нужен оператор dynamic?
12.2. Можно ли сделать переменную с рандомным (случайным) названием?
12.3. Создаю действия с помощью цикла, но они работают неправильно. Что делать?
12.4. Почему не работает dynamic?
Источники и дополнительные материалы
13.1. Рисую таблицу и хочу зафиксировать высоту, но атрибут height не работает.
13.2. Пытаюсь использовать разные HTML-теги в игре, но они не работают — просто не выводятся. Почему?
13.3. Не работает IIF!
13.4. Пытаюсь сделать кликабельную картинку с помощью тегов MAP и AREA, но ничего не получается. | Не выводится картинка, не работает область клика, область клика смещена.
13.5. Не работает *pl в действии с goto.
13.6. В AeroQSP не работает атрибут.
13.7. Не работает гиперссылка в AeroQSP.
13.8. Не работает оператор JUMP — не может найти метку.
13.9. Не работает многострочный код. Как исправить?
13.10. Не работает многострочный код. Как исправить?
13.11. Сколько END`ов нужно добавить?
13.12. Не работает условие. Как исправить? (if skrom>10 and <15)
13.13. Не работают десятичные дроби, дробные числа, числа с запятыми!
Источники и дополнительные материалы
14.1. Как добавить предмет в окно предметов?
14.2. Как удалить предмет из окна предметов?
14.3. Как удалить все предметы?
14.4. Как добавить предмет в определённую позицию в окне предметов?
14.5. Как заменить один предмет на другой?
14.6. Как делать динамические/считаемые предметы? | Как делать стакающиеся предметы? | Как делать предметы рядом с названиями которых выводится их количество?
14.7. Как добавить предмет с картинкой но без названия?
14.8. Как сделать, чтоб при щелчке по предмету выполнялся какой-либо код?
14.9. Как снять выделение предмета? | Как сделать, чтобы выбранный предмет можно было кликнуть ещё раз?
14.10. Как сделать два списка предметов? Например для игры за разных персонажей.
14.11. Как сделать, чтобы плеер выполнял определённый код при добавлении любого предмета?
14.12. Как сделать два разных предмета с одинаковыми названиями?
14.13. Как сделать многоуровневый рюкзак? | Как сделать предметы в предметах?
14.14. Можно ли выводить предметы не в окне предметов?
Источники и дополнительные материалы
15.1. Зачем вообще нужна строка ввода (поле ввода)?
15.2. Как задействовать строку ввода в игре?
Источники и дополнительные материалы
16.1. Можно ли писать текст поверх вставленной картинки (не бэкграунда)?
16.2. Возможно ли сделать плавный переход между локациями?
16.3. Как расположить картинку справа, а текст слева?
16.4. Как ограничить размер выводимого изображения?
16.5. Как сделать рамку окна основного описания? | Как сделать, чтобы картинки шли по контуру основного окна?
16.6. Как сделать вывод предметов магазина не длинным списком, а в виде таблицы?
16.7. Можно ли зеркально отразить картинку методами плеера? | Можно ли задать максимальную или минимальную ширину элементу? | Можно ли вычислить доступное место в основном окне?
16.9. Можно как нибудь вывести текст в два столба в классике? К примеру характеристики персонажей.
16.10. Как работать с тегами MAP и AREA? Как разметить картинку на кликабельные зоны?
Источники и дополнительные материалы
17.1. Как запретить игроку самостоятельно сохранять игру?
17.3. Как сделать чекпойнты в игре?
Источники и дополнительные материалы
18.1. Чем отличаются команды addqst и openqst?
18.2. Как сделать лаунчер?
18.3. Мне нужно узнать, есть ли в папке файл (картинка, музыка и т.д.). Как это сделать?
Источники и дополнительные материалы
19.1. Как использовать ASCII-графику в QSP?
19.2. Как вставить в игру видео?
19.3. Как сделать так, чтобы текст появлялся на экране постепенно? По буквам?
19.4. Как защитить игру от чита?
19.5. Как задействовать клавиатуру в игре?
19.6. Как пропустить прохождение нескольких глав, чтобы протестировать вновь написанную главу и только её?
19.7. Как из под плеера выполнить произвольную строку кода?
19.8. Как узнать, на каком устройстве запущена игра? Телефон, компьютер, планшет?
19.9. Как обновлять переменные на экране?
19.10. Как сделать, чтобы текст выводился снизу вверх?
Источники и дополнительные материалы
20.1. Как сделать возврат на предыдущую локацию?
20.2. Как проверить число на чётность?
20.4. Как сделать, чтобы текст выводился не внизу окна основного описания, а сверху?
20.5. Как можно удалить часть текста из описания?
20.6. Как вывести на экран HTML-разметку, не отключая режим распознавания HTML? То есть при usehtml=1.
20.8. Как в QSP сравнить два массива?
20.11. Как сделать проценты?
20.12. Как решить задачу по поиску случайного набора слагаемых?
20.13. Как разредить текст пробелами?
20.14. Как сделать записную книжку в игре?
20.15. Как сделать так, чтобы на локацию можно было зайти только один раз?
20.16. Как заставить действия выводиться в нужном мне порядке?
20.17. Как сделать в игре книгу? Чтобы её можно было взять и потом прочитать?
20.18. Как сделать склад, сундук, тайник, место, в котором можно выкладывать и хранить предметы?
20.19. Как сделать выпадение случайного действия на локации?
20.20. Как сделать перемещение на случайную локацию?
20.21. Как сделать случайный предмет?
20.22. Как узнать, какие переменные есть в игре? Может для этого есть специальная команда?
20.23. Как убрать преформатирование из HTML-разметки?
Источники и дополнительные материалы
Источники и дополнительные материалы
22.1. Пишу несколько игр в Quest Navigator. Как сделать, чтобы у каждой игры было собственное оформление?
22.2. Как подключить свой шрифт к игре?
22.4. Хочу прописать игре собственный вид курсора, как это сделать?
22.6. Как узнать, на каком плеере запущена игра, на классическом QSP, или на Quest Navigator?
22.7. Как вставить видео в игру на Навигаторе?
22.8. Как делать standalone-сборку на Навигаторе? | Независимая сборка на Quest Navigator
22.10. Как выполнить JavaScript прямо из кода QSP?
22.11. Инструкция посмене оформления из кода QSP?
Источники и дополнительные материалы
23.2. Хочу разместить на локации около 100 действий. Это вообще возможно?
Источники и дополнительные материалы
24.1. Как сделать так, чтобы AeroQSP запускался прямо из Quest Generator?
24.2. Как сделать StandAlone-сборку на классическом плеере? | Можно ли сделать игру так, чтобы играть без плеера? | Как сделать пакетный файл запуска, чтобы игрок тыкал иконку start и сразу начинал играть?
Источники и дополнительные материалы
Алфавитный указатель ключевых слов, спецсимволов, синтаксем